package Gather.Advanced.哈希值.TreeSetLearn.Practice;

import java.util.Comparator;
import java.util.TreeSet;

public class Test {
    public static void main(String[] args) {
        /**
         * 创建五个学生对象
         * 属性：（姓名，年龄，语文成绩，数学成绩，英语成绩）
         * 按照总分从高到低输出
         * 总分一样则按照语文
         * 语文一样则按照数学
         * 数学一样则按照英语
         * 英语一样则按照年龄
         * 年龄一样则按照名字首字母
         */

        Student s1=new Student("wangwu",24,110,90,100);
        Student s2=new Student("lisi",25,72,87,35);
        Student s3=new Student("zhangsan",23,83,34,23);
        Student s4=new Student("xiaoyao",20,100,98,102);
        Student s5=new Student("dafei",24,97,35,56);

        //TreeSet<Student> tree=new TreeSet<>();
        TreeSet<Student> tree=new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int score1= o1.getChinese()+ o1.getEnglish()+o1.getMathematics();
                int score2= o2.getChinese()+ o2.getEnglish()+o2.getMathematics();
                //按照总分从高到低输出
                int i=score2-score1;
                //总分一样则按照语文
                i=i==0?o2.getChinese()-o1.getChinese():i;
                //语文一样则按照数学
                i=i==0?o2.getMathematics()-o1.getMathematics():i;
                //数学一样则按照英语
                i=i==0?o2.getEnglish()-o1.getEnglish():i;
                //英语一样则按照年龄
                i=i==0?o2.getAge()-o1.getAge():i;
                //年龄一样则按照名字首字母
                i=i==0?o2.getName().compareTo(o1.getName()):i;
                return i;
            }
        });

        //添加
        tree.add(s1);
        tree.add(s2);
        tree.add(s3);
        tree.add(s4);
        tree.add(s5);
        //打印
        for (Student student : tree) {
            int score1= student.getChinese()+ student.getEnglish()+student.getMathematics();
            System.out.println("总分为:"+score1);
            System.out.println(student);
        }
        //System.out.println(tree);
    }
}
